home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 26
/
Cream of the Crop 26.iso
/
program
/
tcqbsnip.zip
/
BATINP.BAS
< prev
next >
Wrap
BASIC Source File
|
1997-06-20
|
2KB
|
103 lines
' BATINP.BAS
' by Tika Carr
'
' Donated to the public domain
' No warranties or guarantees are expressed or implied.
'
'Based on ENVIRON.BAS posted by Jack Hudgions to the QUIK_BAS Echo
'
'Requires: QB.QLB, QB.LIB and QB.BI for QuickBasic 4.5 or
' QBX.QLB, QBX.LIB and QBX.BI for PDS/Basic7
' (Start QuickBasic with: QB /L QB.QLB)
'Credits:
' Douglas Lusher, Fidonet QuickBASIC, 07-11-94
' Jack Hudgions, Fidonet QuickBASIC, 12/1996
'
'------- Demo Batch File Example: -------
'
'@echo off
'rem First we must set up the environment to accept a certain amount of
'rem characters expected. Here we expect maybe up to 20 characters for
'rem a name.
'SET BINP=x
'
'echo Please type your name.
'
'rem The next line lets you input characters into that environment
'rem variable we just set.
'INPUT BINP
'
'echo Hello, %BINP%
'
'rem The next line clears the variable out of the environment table.
'SET BINP=
'
'------- END BATCH --------
DEFINT A-Z
'$INCLUDE: 'qb.bi'
DIM RegsX AS RegTypeX
RegsX.ax = &H352E
NULL$ = CHR$(0)
LINE INPUT a$
Env$ = COMMAND$ + "=" + a$
EqualPtr% = INSTR(Env$, "=")
IF LEN(Env$) = 0 OR INSTR(Env$, NULL$) OR EqualPtr% <= 1 THEN END
EVar$ = UCASE$(LEFT$(Env$, EqualPtr%))
EnvVal$ = MID$(Env$, EqualPtr% + 1)
INTERRUPTX &H21, RegsX, RegsX
DEF SEG = RegsX.es
EnvSeg& = PEEK(&H2C) + PEEK(&H2D) * 256&
DEF SEG = EnvSeg& - 1
EnvSize% = (PEEK(3) + PEEK(4) * 256) * 16
DEF SEG
Tmp$ = SPACE$(EnvSize%)
DEF SEG = EnvSeg&
FOR EqualPtr% = 1 TO LEN(Tmp$)
MID$(Tmp$, EqualPtr%, 1) = CHR$(PEEK(EqualPtr% - 1))
NEXT
DEF SEG
Tmp$ = LEFT$(Tmp$, INSTR(Tmp$, NULL$ + NULL$))
IF LEN(Tmp$) = 1 THEN Tmp$ = ""
'Mark's modification begin.
EnvVarPtr% = INSTR(Tmp$, NULL$ + EVar$) + 1
IF EnvVarPtr% = 0 THEN
EnvVarPtr% = INSTR(Tmp$, EVar$)
IF EnvVarPtr% > 1 THEN EnvVarPtr% = 0
END IF
' Mark's modification end.
IF EnvVarPtr% THEN
NextPtr% = INSTR(EnvVarPtr%, Tmp$, NULL$) + 1
IF NextPtr% > LEN(Tmp$) THEN
Tmp$ = LEFT$(Tmp$, EnvVarPtr% - 1)
ELSE
Tmp$ = LEFT$(Tmp$, EnvVarPtr% - 1) + MID$(Tmp$, NextPtr%)
END IF
END IF
IF LEN(EnvVal$) THEN
Tmp$ = Tmp$ + EVar$ + EnvVal$ + NULL$ + NULL$
IF LEN(Tmp$) > EnvSize% THEN END
ELSE
Tmp$ = Tmp$ + NULL$
IF LEN(Tmp$) = 1 THEN
Tmp$ = Tmp$ + NULL$
END IF
END IF
DEF SEG = EnvSeg&
FOR Ptr% = 1 TO LEN(Tmp$)
POKE Ptr% - 1, ASC(MID$(Tmp$, Ptr%, 1))
NEXT
DEF SEG